<!--
========================================================================
 *  Copyright by KNIME AG, Zurich, Switzerland
 *  Website: http://www.knime.com; Email: contact@knime.com
 *
 *  This program is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License, Version 3, as
 *  published by the Free Software Foundation.
 *
 *  This program is distributed in the hope that it will be useful, but
 *  WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with this program; if not, see <http://www.gnu.org/licenses>.
 *
 *  Additional permission under GNU GPL version 3 section 7:
 *
 *  KNIME interoperates with ECLIPSE solely via ECLIPSE's plug-in APIs.
 *  Hence, KNIME and ECLIPSE are both independent programs and are not
 *  derived from each other. Should, however, the interpretation of the
 *  GNU GPL Version 3 ("License") under any applicable laws result in
 *  KNIME and ECLIPSE being a combined program, KNIME AG herewith grants
 *  you the additional permission to use and propagate KNIME together with
 *  ECLIPSE with only the license terms in place for ECLIPSE applying to
 *  ECLIPSE and the GNU GPL Version 3 applying for KNIME, provided the
 *  license terms of ECLIPSE themselves allow for the respective use and
 *  propagation of ECLIPSE together with KNIME.
 *
 *  Additional permission relating to nodes for KNIME that extend the Node
 *  Extension (and in particular that are based on subclasses of NodeModel,
 *  NodeDialog, and NodeView) and that only interoperate with KNIME through
 *  standard APIs ("Nodes"):
 *  Nodes are deemed to be separate and independent programs and to not be
 *  covered works.  Notwithstanding anything to the contrary in the
 *  License, the License does not apply to Nodes, you are not required to
 *  license Nodes under the License, and you are granted a license to
 *  prepare and propagate Nodes, in each case even if such Nodes are
 *  propagated with or for interoperation with KNIME.  The owner of a Node
 *  may freely choose the license terms applicable to such Node, including
 *  when such Node is propagated with or for interoperation with KNIME.
====================================================================
-->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta content="text/html; charset=ISO-8859-1" http-equiv="content-type"/>
  <title>Renderer Package</title>
</head>
<body>
	Interfaces and default implementations for renderer of <code>DataValue</code>
	objects.
	<p>
		This package describes the general structure for renderer and renderer
		families of <code>DataValue</code>. Generally, each 
		{@link org.knime.core.data.DataValue <code>DataValue</code>}
		implementation can define its own set of renderer. These renderer
		are accumulated in a <code>DataValueRendererFamily</code>.
	</p>
	<p>
		Here is what you should do if you implement your own 
		<code>DataValue</code> and make one or more renderer available for it:
	</p>
	<ul>
		<li>Create your own renderer implementing the 
			<code>DataValueRenderer</code> interface. (You might consider to 
			derive from <code>DefaultDataValueRenderer</code>).
		</li>
		<li>
			Implement a <code>DataValueRendererFamily</code> that either
			uses singletons of the renderers above or creates them on 
			request. As before: it is probably useful to extend the default
			implementation, i.e. <code>DefaultDataValueRendererFamily</code>.
			Such a family is responsible to handle multiple different
			renderers.
		</li>
		<li>Make a {@link org.knime.core.data.DataValue.UtilityFactory 
               UtilityFactory} in your <code>DataValue</code> implementation 
               available as described in the 
               <a href="../doc-files/newtypes.html#newtypes">manual</a>
			methode <code>getNativeRenderer()</code> and return your newly
			created renderer family therein.
		</li>
	</ul>
</body>
</html>
